package com.mjfeed.dao;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.mjfeed.bean.CartItemJSON;
import com.mjfeed.util.DBHelper;
/**
 * 购物车
 * @author zhaominglei
 * @date 2014-12-20
 * 
 */
public class CartItemDao extends BaseDao {
	private static final String TABLE_NAME = "feed_cart_item";
	
	public void save(Context context, CartItemJSON cartItemJSON) {
		SQLiteDatabase db = DBHelper.getInstance(context).getWritableDatabase();
		ContentValues contentValues = new ContentValues();
		contentValues.put("cartitemid", cartItemJSON.getCartItemId());
		contentValues.put("cartid", cartItemJSON.getCartId());
		contentValues.put("productid", cartItemJSON.getProductId());
		contentValues.put("quantity", cartItemJSON.getQuantity());
		contentValues.put("sn", cartItemJSON.getSn());
		contentValues.put("name", cartItemJSON.getName());
		contentValues.put("price", cartItemJSON.getPrice().doubleValue());
		contentValues.put("stock", cartItemJSON.getStock());
		contentValues.put("imageurl", cartItemJSON.getImageUrl());
		db.insert(TABLE_NAME, null, contentValues);
	}
	
	public void delete(Context context, Long cartitemid) {
		SQLiteDatabase  db = DBHelper.getInstance(context).getWritableDatabase();
		db.execSQL("delete from "+TABLE_NAME+" where cartitemid=?", new Object[]{ cartitemid });
	}
	
	public void deleteAll(Context context) {
		deleteAll(context, TABLE_NAME);
	}
	
	public void update(Context context, CartItemJSON cartItemJSON) {
		SQLiteDatabase  db = DBHelper.getInstance(context).getWritableDatabase();
		ContentValues contentValues = new ContentValues();
		contentValues.put("quantity", cartItemJSON.getQuantity());
		db.update(TABLE_NAME, contentValues, "cartitemid=?", new String[]{ String.valueOf(cartItemJSON.getCartItemId()) });
	}
	
	public List<CartItemJSON> getAll(Context context) {
		List<CartItemJSON> cartItems = new ArrayList<CartItemJSON>();
		SQLiteDatabase db = DBHelper.getInstance(context).getReadableDatabase();
		Cursor cursor = db.rawQuery("select * from "+TABLE_NAME, null);
		while (cursor.moveToNext()) {
			CartItemJSON cartItemJSON = new CartItemJSON();
			cartItemJSON.setCartItemId(cursor.getLong(cursor.getColumnIndex("cartitemid")));
			cartItemJSON.setCartId(cursor.getLong(cursor.getColumnIndex("cartid")));
			cartItemJSON.setProductId(cursor.getLong(cursor.getColumnIndex("productid")));
			cartItemJSON.setQuantity(cursor.getInt(cursor.getColumnIndex("quantity")));
			cartItemJSON.setSn(cursor.getString(cursor.getColumnIndex("sn")));
			cartItemJSON.setName(cursor.getString(cursor.getColumnIndex("name")));
			cartItemJSON.setPrice(new BigDecimal(cursor.getDouble(cursor.getColumnIndex("price"))));
			cartItemJSON.setStock(cursor.getInt(cursor.getColumnIndex("stock")));
			cartItemJSON.setImageUrl(cursor.getString(cursor.getColumnIndex("imageurl")));
			cartItems.add(cartItemJSON);
		}
		return cartItems;
	}
	
	public CartItemJSON getById(Context context, Long cartItemId) {
		SQLiteDatabase db = DBHelper.getInstance(context).getReadableDatabase();
		Cursor cursor = db.rawQuery("select * from "+TABLE_NAME+" where cartitemid=?", new String[]{ String.valueOf(cartItemId) });
		if (cursor.moveToFirst()) {
			CartItemJSON cartItemJSON = new CartItemJSON();
			cartItemJSON.setCartItemId(cursor.getLong(cursor.getColumnIndex("cartitemid")));
			cartItemJSON.setCartId(cursor.getLong(cursor.getColumnIndex("cartid")));
			cartItemJSON.setProductId(cursor.getLong(cursor.getColumnIndex("productid")));
			cartItemJSON.setQuantity(cursor.getInt(cursor.getColumnIndex("quantity")));
			cartItemJSON.setSn(cursor.getString(cursor.getColumnIndex("sn")));
			cartItemJSON.setName(cursor.getString(cursor.getColumnIndex("name")));
			cartItemJSON.setPrice(new BigDecimal(cursor.getDouble(cursor.getColumnIndex("price"))));
			cartItemJSON.setStock(cursor.getInt(cursor.getColumnIndex("stock")));
			cartItemJSON.setImageUrl(cursor.getString(cursor.getColumnIndex("imageurl")));
			return cartItemJSON;
		}
		return null;
	}
	
	public CartItemJSON getByProductId(Context context, Long productId) {
		SQLiteDatabase db = DBHelper.getInstance(context).getReadableDatabase();
		Cursor cursor = db.rawQuery("select * from "+TABLE_NAME+" where productid=?", new String[]{ String.valueOf(productId) });
		if (cursor.moveToFirst()) {
			CartItemJSON cartItemJSON = new CartItemJSON();
			cartItemJSON.setCartItemId(cursor.getLong(cursor.getColumnIndex("cartitemid")));
			cartItemJSON.setCartId(cursor.getLong(cursor.getColumnIndex("cartid")));
			cartItemJSON.setProductId(cursor.getLong(cursor.getColumnIndex("productid")));
			cartItemJSON.setQuantity(cursor.getInt(cursor.getColumnIndex("quantity")));
			cartItemJSON.setSn(cursor.getString(cursor.getColumnIndex("sn")));
			cartItemJSON.setName(cursor.getString(cursor.getColumnIndex("name")));
			cartItemJSON.setPrice(new BigDecimal(cursor.getDouble(cursor.getColumnIndex("price"))));
			cartItemJSON.setStock(cursor.getInt(cursor.getColumnIndex("stock")));
			cartItemJSON.setImageUrl(cursor.getString(cursor.getColumnIndex("imageurl")));
			return cartItemJSON;
		}
		return null;
	}
}
